package frsf.cidisi.exercise.tp1.search;

import java.util.Vector;

import frsf.cidisi.faia.state.EnvironmentState;
import frsf.cidisi.faia.state.datastructure.Pair;

/**
 * This class represents the real world state.
 */
public class EstadoLaberinto extends EnvironmentState {
	
	//TODO: Setup Variables hecho
    private Pair posicionExp;
    private int orientacionExp;
    private boolean tieneLlaveExp;
    private Vector<Salida> salidas;
    private Vector<Pair> entradas;
    private Pair posLlave;
    private Vector<Vector<Celda>> laberinto;
    private int nivelActual;
	
    public EstadoLaberinto() {
        
        //TODO: Complete Method hecho
    
    // this.initState();
    }

    public EstadoLaberinto(Pair posicionExp, int orientacionExp,
			boolean tieneLlaveExp, Vector<Salida> salidas,
			Vector<Pair> entradas, Pair posLlave,
			Vector<Vector<Celda>> laberinto, int nivelActual) {
		super();
		this.posicionExp = posicionExp;
		this.orientacionExp = orientacionExp;
		this.tieneLlaveExp = tieneLlaveExp;
		this.salidas = salidas;
		this.entradas = entradas;
		this.posLlave = posLlave;
		this.laberinto = laberinto;
		this.nivelActual = nivelActual;
	}

	/**
     * This method is used to setup the initial real world.
     */
    @Override
    public void initState() {

        //TODO: Complete Method no nec
    }

    /**
     * String representation of the real world state.
     */
    @Override
    public String toString() {
        String str = "";

        //TODO: Complete Method no nec

        return str;
    }

	//TODO: hecho Complete this section with agent-specific methods
    // The following methods are agent-specific:
	
     public Pair getposicionExp(){
        return posicionExp;
     }
     public void setposicionExp(Pair arg){
        posicionExp = arg;
     }
     public int getorientacionExp(){
        return orientacionExp;
     }
     public void setorientacionExp(int arg){
        orientacionExp = arg;
     }
     public boolean gettieneLlave(){
        return tieneLlaveExp;
     }
     public void settieneLlave(boolean arg){
        tieneLlaveExp = arg;
     }
     
     public Vector<Salida> getSalidas() {
		return salidas;
	}

	public void setSalidas(Vector<Salida> salidas) {
		this.salidas = salidas;
	}

	public Vector<Pair> getEntradas() {
		return entradas;
	}

	public void setEntradas(Vector<Pair> entradas) {
		this.entradas = entradas;
	}

	public Vector<Vector<Celda>> getLaberinto() {
		return laberinto;
	}

	public void setLaberinto(Vector<Vector<Celda>> laberinto) {
		this.laberinto = laberinto;
	}

	public Pair getposLlave(){
        return posLlave;
     }
     public void setposLlave(Pair arg){
        posLlave = arg;
     }

     public int getnivelActual(){
        return nivelActual;
     }
     public void setnivelActual(int arg){
        nivelActual = arg;
     }
	

}

